package com.ruoyi.report.mapper;

import java.util.List;

import com.ruoyi.report.domain.ReportExportVO;
import com.ruoyi.report.domain.SysReportDetails;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 报告列表Mapper接口
 *
 * @author ruoyi
 * @date 2024-06-28
 */
public interface SysReportDetailsMapper
{
    /**
     * 查询报告列表
     *
     * @param id 报告列表主键
     * @return 报告列表
     */
    public SysReportDetails selectSysReportDetailsById(Long id);

    /**
     * 查询报告列表列表
     *
     * @param sysReportDetails 报告列表
     * @return 报告列表集合
     */
    public List<SysReportDetails> selectSysReportDetailsList(SysReportDetails sysReportDetails);

    /**
     * 新增报告列表
     *
     * @param sysReportDetails 报告列表
     * @return 结果
     */
    public int insertSysReportDetails(SysReportDetails sysReportDetails);

    /**
     * 修改报告列表
     *
     * @param sysReportDetails 报告列表
     * @return 结果
     */
    public int updateSysReportDetails(SysReportDetails sysReportDetails);

    /**
     * 删除报告列表
     *
     * @param id 报告列表主键
     * @return 结果
     */
    public int deleteSysReportDetailsById(Long id);

    /**
     * 批量删除报告列表
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSysReportDetailsByIds(Long[] ids);


    List<SysReportDetails> selectSysReportDetailsByIds(@Param("orderIds") List<Long> orderIds);


    void insertBatchSysReportDetails(@Param("reportDetailsList") List<SysReportDetails> reportDetailsList);




    List<SysReportDetails> selectSysReportByOrderIdAndType(@Param("orderId") long orderId, @Param("type") String type);

    List<ReportExportVO> getReportDetailsList(ReportExportVO reportExportVO);

    List<SysReportDetails> selectSysReportByOrderIdAndSurveyId(@Param("orderId") Long orderId, @Param("surveyId")Long surveyId);

    @Select("seelct survey_result from sys_report_details where order_id = #{orderId}")
    List<Long> selectSysReportDetailsByOrderId(Long orderId);

    @Select("select max(survey_result) from sys_report_details where order_id = #{orderId}")
    Long selectMaxResultByOrderId(Long orderId);
}
